package com.yupi.yuaiagent.demo.invoke;

import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

/**
 * 通义千问 API 调用示例
 */
public class QwenAiInvoke {

    /**
     * API 请求地址
     */
    private static final String API_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";

    /**
     * 调用通义千问 API
     *
     * @param apiKey API密钥
     * @return API响应结果
     */
    public static String doChat(String apiKey) {
        // 构建消息数组
        JSONArray messages = new JSONArray();

        // 添加系统角色消息
        JSONObject systemMessage = new JSONObject();
        systemMessage.set("role", "system");
        systemMessage.set("content", "You are a helpful assistant.");
        messages.add(systemMessage);

        // 添加用户消息
        JSONObject userMessage = new JSONObject();
        userMessage.set("role", "user");
        userMessage.set("content", "你是谁？");
        messages.add(userMessage);

        // 构建请求体
        JSONObject requestBody = new JSONObject();
        requestBody.set("model", "qwen-plus");
        requestBody.set("messages", messages);

        // 发送请求
        String result = HttpRequest.post(API_URL)
                .header("Authorization", "Bearer " + apiKey)
                .header("Content-Type", "application/json")
                .body(requestBody.toString())
                .execute()
                .body();

        return result;
    }

    /**
     * 调用通义千问 API（可自定义用户输入）
     *
     * @param apiKey API密钥
     * @param userContent 用户输入的内容
     * @return API响应结果
     */
    public static String doChat(String apiKey, String userContent) {
        // 构建消息数组
        JSONArray messages = new JSONArray();

        // 添加系统角色消息
        JSONObject systemMessage = new JSONObject();
        systemMessage.set("role", "system");
        systemMessage.set("content", "You are a helpful assistant.");
        messages.add(systemMessage);

        // 添加用户消息
        JSONObject userMessage = new JSONObject();
        userMessage.set("role", "user");
        userMessage.set("content", userContent);
        messages.add(userMessage);

        // 构建请求体
        JSONObject requestBody = new JSONObject();
        requestBody.set("model", "qwen-plus");
        requestBody.set("messages", messages);

        // 发送请求
        String result = HttpRequest.post(API_URL)
                .header("Authorization", "Bearer " + apiKey)
                .header("Content-Type", "application/json")
                .body(requestBody.toString())
                .execute()
                .body();

        return result;
    }

    /**
     * 主方法，用于测试
     */
    public static void main(String[] args) {
        // 替换为你的 API 密钥
        String apiKey = TestApiKey.API_KEY;

        // 调用 API
        String response = doChat(apiKey);

        // 打印响应结果
        System.out.println("API 响应结果：");
        System.out.println(response);

        // 如果响应是 JSON 格式，可以进一步解析
        try {
            JSONObject jsonResponse = JSONUtil.parseObj(response);
            System.out.println("解析后的 JSON 响应：");
            System.out.println(JSONUtil.toJsonPrettyStr(jsonResponse));
        } catch (Exception e) {
            System.out.println("响应不是有效的 JSON 格式");
        }
    }
}
